package ar.com.arkios.kfconsap.model;

import ar.com.arkios.kfconsap.excepciones.*;
import com.sap.mw.jco.IRepository;
import com.sap.mw.jco.JCO;

/**
 * @author Ale
 * @since 10-10-08
 * 
 */
public class ClienteSAP {

	public static String SID = "JAVAR3"; 

	private JCO.Client connection = null;
	private IRepository repository = null;

	private String userName;
	private String password;
	private String language;
	private String hostName;
	private String systemNumber;
	private String clientNumber;
		
		
	/**
	 * Method ClienteSAP: Representa un cliente SAP.
	 * @param nombreDeUsuario
	 * @param contrasena
	 * @param idioma
	 * @param host
	 * @param nroDeSistema
	 * @param nroDeCliente
	 */
	public ClienteSAP(String nombreDeUsuario, String contrasena, String idioma, String host, String nroDeSistema, String nroDeCliente)
	{
		userName = nombreDeUsuario;
		password = contrasena;
		language = idioma;
		hostName = host;
		systemNumber = nroDeSistema;
		clientNumber = nroDeCliente;	
	}   	
	
	/**
	 * Method AbrirConexion. Establece una conexion con SAP.
	 * @throws Exception
	 */
	public void AbrirConexion() throws BAPIException
	{
	
		try {
			//Abro la conexion a SAP
			connection =
				JCO.createClient(
					clientNumber,
					userName,
					password,
					language,
					hostName,
					systemNumber);

			connection.connect();
			repository = new JCO.Repository(SID, connection);

		} catch (Exception e) {
			System.out.println("Hubo un error al establecer la conexion con SAP");
			e.printStackTrace();
			throw new BAPIException();
		}	
	}	
	
	/**
	 * Method CerrarConexion. Cierra la conexion con SAP.
	 * @throws Exception
	 */
        
	public void CerrarConexion() throws Exception 
	{
		try
		{
			connection.disconnect();
		}
		catch(Exception e)
		{
			throw e;
		}
	}
	
	public static void main(String[] args) {
	}
	/**
	 * Returns the connection.
	 * @return JCO.Client
	 */
	public JCO.Client getConnection() {
		return connection;
	}

	/**
	 * Returns the repository.
	 * @return IRepository
	 */
	public IRepository getRepository() {
		return repository;
	}

}
